package com.sheng.leetcode.year2025.month10.day01;

import org.junit.Test;

/**
 * @author by ls
 * @date 2025/10/10
 * <p>
 * 1518. 换水问题<p>
 * <p>
 * 超市正在促销，你可以用 numExchange 个空水瓶从超市兑换一瓶水。最开始，你一共购入了 numBottles 瓶水。<p>
 * 如果喝掉了水瓶中的水，那么水瓶就会变成空的。<p>
 * 给你两个整数 numBottles 和 numExchange ，返回你 最多 可以喝到多少瓶水。<p>
 * <p>
 * 示例 1：<p>
 * 输入：numBottles = 9, numExchange = 3<p>
 * 输出：13<p>
 * 解释：你可以用 3 个空瓶兑换 1 瓶水。<p>
 * 所以最多能喝到 9 + 3 + 1 = 13 瓶水。<p>
 * <p>
 * 示例 2：<p>
 * 输入：numBottles = 15, numExchange = 4<p>
 * 输出：19<p>
 * 解释：你可以用 4 个空瓶兑换 1 瓶水。<p>
 * 所以最多能喝到 15 + 3 + 1 = 19 瓶水。<p>
 * <p>
 * 提示：<p>
 * 1 <= numBottles <= 100<p>
 * 2 <= numExchange <= 100<p>
 */
public class LeetCode1518 {

    @Test
    public void test() {
//        int numBottles = 9, numExchange = 3;
        int numBottles = 15, numExchange = 4;
        System.out.println(new Solution().numWaterBottles(numBottles, numExchange));
    }
}

class Solution {
    public int numWaterBottles(int numBottles, int numExchange) {
        // sum 是一共喝水的瓶数量，nul 是目前剩余空瓶子的数量
        int sum = 0, nul = 0;
        while ((numBottles + nul) / numExchange != 0) {
            // 每次把水喝完
            sum += numBottles;
            nul += numBottles;
            // nul / numExchange 是可以换多少瓶水，nul % numExchange 是剩余多少空瓶子
            numBottles = nul / numExchange;
            nul %= numExchange;
        }
        sum += numBottles;
        return sum;
    }
}
